The invention relates to computer systems and, in particular, to customizing system BIOS during the boot-up process.
The basic input/output system (BIOS) in an IBM-compatible personal computer system is the front-line component of the computer""s operating system. Among the duties performed by the BIOS is the power-on self-test (POST), during which the computer""s resources are tested and configured for operation. In many situations, system BIOS also provides runtime services for software applications, particularly those that require interrupt services.
In many system chipsets, system BIOS is customized to support non-standard system configurations offered by computer manufacturers. In general, a unique version of the system BIOS code is provided for each custom system configuration offered by the hardware manufacturers. In addition, the BIOS code includes several instructions, or xe2x80x9chooks,xe2x80x9d that are used to invoke microcode associated with a particular hardware manufacturer""s custom configuration settings. This microcode, which is provided by the hardware manufacturer and known as xe2x80x9cuser binary,xe2x80x9d is typically stored in a writable read-only memory device, such as Flash ROM.
In some chipsets, including those found in many servers, the standard BIOS allows for slight variations in the system configuration. The BIOS inspects a data bit stored in the system""s CMOS memory area that indicates whether a particular system component, such as a front panel controller, is to be installed. The BIOS executes the corresponding installation sequence only if the bit has a particular value. This feature is limited, however, by its dependency on CMOS memory. The BIOS reverts to a default setting when the data bit is unavailable or unreliable due to a condition such as CMOS corruption, CMOS clear, or uninitialized CMOS. This approach also limits hardware manufacturers to very few alternative system configurations.
The inventor has developed a technique for using a single, uniform BIOS to support a wide variety of system configurations. This simplifies maintenance of the BIOS code base and eliminates the risk of providing an incorrect version of the BIOS code to a particular hardware manufacturer. Storing configuration data in a device such as Flash ROM eliminates CMOS dependency and allows large amounts of data corresponding to many alternative system configurations.
In one aspect, the invention features a computer that includes a processor, an electronic memory device to store BIOS code, and an electronic storage device, such as Flash ROM, to store configuration data. The configuration data indicates whether two optional components are installed in the computer. The BIOS code includes code sections that are associated with operation of the two optional components. In operation, the processor accesses the configuration data to determine if the two optional components are installed. The processor executes the section of the BIOS code associated with the first optional component only upon determining that the first optional component is installed. Likewise, the processor executes the section of the BIOS code associated with the second optional component only upon determining that the second optional component is installed.
In some embodiments, the configuration data is stored in consecutive individually addressable storage locations in the electronic storage device. The configuration data usually begins at a location having a predetermined address offset. In other embodiments, each byte of configuration data includes multiple bits dedicated to indicating which of the optional components are installed in the computer. The configuration data typically includes at least one data bit corresponding to each of the optional components in the group. Other embodiments include custom program code stored in the electronic storage device. This code, when executed with the BIOS code, enables operation of at least one of the optional components. In some cases, the electronic storage device also stores information indicating a checksum value for the configuration data.
In another aspect, the invention features an electronic storage device containing executable BIOS code for execution by a computer processor. When executing the BIOS code, the processor accesses a data storage device to obtain configuration data identifying optional components that are installed in the computer. The processor then executes those portions of the BIOS code that are associated with the optional components identified as being installed in the computer. The processor does not execute those portions of the BIOS code that are associated with the optional components that are not installed in the computer.
In another aspect, the invention features an electronic storage device, such as Flash ROM, in a computer system. The storage device includes individually addressable storage locations in which configuration data is stored, beginning at a location having a predetermined address offset. At least some bits of the configuration data are stored at bit addresses dedicated to storing information that indicates whether particular optional system components are installed in the computer system.
In yet another aspect, the invention features a method for use in configuring a computer for operation. The method involves accessing a memory device to retrieve program code that, when executed, forms a basic input/output system (BIOS) for the computer and that includes code sections associated with the operation of optional components. At the direction of the BIOS code, a data storage device is accessed to obtain configuration data identifying which of the optional components are installed in the computer. Those portions of the BIOS code associated with the installed components are executed. Those portions of the BIOS code associated with components that are not installed are not executed.